//1.导入axios
import axios from "axios";

//2.实例化axios对象
const service = axios.create({
    timeout: 10 * 1000,
    baseURL: '/api'//基准公共路径（请求地址的前缀）
})

//3.设置请求拦截器
service.interceptors.request.use(
    (config) => {//config是配置的意思
        //请求发送前的逻辑处理
        //一般用于修改请求头参数，给请求头设置参数，一般参数为token，然后后端就可以从请求头header中获取参数
        console.log('service.interceptors.request');

        //设置请求头参数（携带请求头参数）
        config.headers['token'] = localStorage.getItem('token');

        return config
    },
    (error) => {
        return Promise.reject(error)
    }
)

//4.设置响应拦截器
service.interceptors.response.use(
    (res) => {
        //可以做出一些操作，比如状态码的操作，或者更新一些本地存储内容操作
        return res
    },
    (error) => {
        if (error.response.status == 401) {
            alert('登录过期，请重新登录')
            //自动删除过期的token
            // localStorage.removeItem('token')
            //自动跳转到登录页
            // window.location.href = "/login"
        }
        else if (error.response.status == 404) {
            alert('访问路径有误')
        }
        else if (error.response.status == 500) {
            alert('服务器内部有问题')
        }
        return Promise.reject(error)
    }
)

//5.导出service （封装后的axios）
export default service
